While
Create a loop. All child elements are executed as long as the condition in the test attribute evaluates to true.
Child elements
A
, Action
, AddSearchpath
, AttachFile
, Attribute
, B
, Barcode
, Bookmark
, Box
, Br
, ClearPage
, Clip
, Color
, Column
, Columns
, Copy-of
, DefineColor
, DefineFontalias
, DefineFontfamily
, DefineMatter
, DefineTextformat
, Element
, Fontface
, ForAll
, Frame
, Group
, HSpace
, Hyphenation
, I
, Image
, Include
, Initial
, InsertPages
, Layout
, Li
, LoadDataset
, LoadFontfile
, Loop
, Message
, NextFrame
, NextRow
, NoBreak
, Options
, Output
, Overlay
, Pageformat
, Pagetype
, Paragraph
, PlaceObject
, PositioningArea
, PositioningFrame
, ProcessNode
, SaveDataset
, SavePages
, SetGrid
, SetVariable
, SortSequence
, Span
, StructureElement
, Sub
, Sup
, Switch
, Table
, TableNewPage
, Tablehead
, Tablerule
, Td
, Tr
, Trace
, Transformation
, U
, Until
, VSpace
, Value
, While
Parent elements
AtPageCreation
, AtPageShipout
, Case
, Contents
, ForAll
, Layout
, Loop
, Otherwise
, Record
, SavePages
, Until
, While
Attributes
test
(XPath expression)-
Every time before the the loop is executed, this condition must evaluate to true. See the command Until for a loop with an exit test.
Example
The following example creates a textblock with three times the contents 'Text Text Text '.
<Record element="data">
<SetVariable variable="counter" select="1"/>
<SetVariable variable="text" select="''"/>
<While test=" $counter <= 3 "> <!-- less or equal -->
<SetVariable variable="counter" select=" $counter + 1"/>
<SetVariable variable="text">
<Value select="$text"/>
<Value select="'Text '"/>
</SetVariable>
</While>
<PlaceObject>
<Textblock>
<Paragraph><Value select="$text"/></Paragraph>
</Textblock>
</PlaceObject>
</Record>
See also
The section loops in chapter programming.